<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Kinetis Bootloader: Universal Asynchronous Receiver/Transmitter (UART)</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="nxp_logo_small.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Kinetis Bootloader
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   <div id="projectbrief">Common bootloader for Kinetis devices</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Introduction</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__uart.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a>  </div>
  <div class="headertitle">
<div class="title">Universal Asynchronous Receiver/Transmitter (UART)</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:structuart__config__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#structuart__config__t">uart_config_t</a></td></tr>
<tr class="memdesc:structuart__config__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART configuration structure.  <a href="group__uart.html#structuart__config__t">More...</a><br /></td></tr>
<tr class="separator:structuart__config__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structuart__transfer__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a></td></tr>
<tr class="memdesc:structuart__transfer__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART transfer structure.  <a href="group__uart.html#structuart__transfer__t">More...</a><br /></td></tr>
<tr class="separator:structuart__transfer__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:struct__uart__handle"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#struct__uart__handle">uart_handle_t</a></td></tr>
<tr class="memdesc:struct__uart__handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART handle structure.  <a href="group__uart.html#struct__uart__handle">More...</a><br /></td></tr>
<tr class="separator:struct__uart__handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga2868b6ea396ab212547f2157380429c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2868b6ea396ab212547f2157380429c5"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga2868b6ea396ab212547f2157380429c5">uart_transfer_callback_t</a>) (UART_Type *base, uart_handle_t *handle, <a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> status, void *userData)</td></tr>
<tr class="memdesc:ga2868b6ea396ab212547f2157380429c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART transfer callback function. <br /></td></tr>
<tr class="separator:ga2868b6ea396ab212547f2157380429c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gacef40dc8e8ac174bfe40ebcbc980f84b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gacef40dc8e8ac174bfe40ebcbc980f84b">_uart_status</a> { <br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84ba19ddee4fe5963467600028b78fb468e7">kStatus_UART_TxBusy</a> = MAKE_STATUS(kStatusGroup_UART, 0), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84ba68cf23f981c4b85f82291163fbb2a5e6">kStatus_UART_RxBusy</a> = MAKE_STATUS(kStatusGroup_UART, 1), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84baf36c829b1b889517bf775c0d7ce29fa6">kStatus_UART_TxIdle</a> = MAKE_STATUS(kStatusGroup_UART, 2), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84bae0877b14627ed2aa8ddb2bf5b033f407">kStatus_UART_RxIdle</a> = MAKE_STATUS(kStatusGroup_UART, 3), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84ba765913f003819ed87b861d187bf79ab8">kStatus_UART_TxWatermarkTooLarge</a> = MAKE_STATUS(kStatusGroup_UART, 4), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84ba720cefde05389830f35f6e6df6f6ac67">kStatus_UART_RxWatermarkTooLarge</a> = MAKE_STATUS(kStatusGroup_UART, 5), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84ba5ee8e23fc9ab20cf366942751b895f54">kStatus_UART_FlagCannotClearManually</a>, 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84ba950972a9e2ebbaa13c92e8f5a51f785d">kStatus_UART_Error</a> = MAKE_STATUS(kStatusGroup_UART, 7), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84ba2e5b644b1e10c426af818bc78657e992">kStatus_UART_RxRingBufferOverrun</a> = MAKE_STATUS(kStatusGroup_UART, 8), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84bab6b1fd6c2deec25992449f5b12303a26">kStatus_UART_RxHardwareOverrun</a> = MAKE_STATUS(kStatusGroup_UART, 9)
<br />
 }<tr class="memdesc:gacef40dc8e8ac174bfe40ebcbc980f84b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error codes for the UART driver.  <a href="group__uart.html#gacef40dc8e8ac174bfe40ebcbc980f84b">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:gacef40dc8e8ac174bfe40ebcbc980f84b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga436e5a7bdb5f24decb5bfb0c87a83ff4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga436e5a7bdb5f24decb5bfb0c87a83ff4">uart_parity_mode_t</a> { <br />
&#160;&#160;<a class="el" href="group__uart.html#gga436e5a7bdb5f24decb5bfb0c87a83ff4a97e2feae6671a6de1126ebc2edf4606b">kUART_ParityDisabled</a> = 0x0U, 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga436e5a7bdb5f24decb5bfb0c87a83ff4a9e68fe3aba46e045bee5433ed098bff0">kUART_ParityEven</a> = 0x2U, 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga436e5a7bdb5f24decb5bfb0c87a83ff4ae48c7fabc9babf1be626ebeb2627a54c">kUART_ParityOdd</a> = 0x3U
<br />
 }<tr class="memdesc:ga436e5a7bdb5f24decb5bfb0c87a83ff4"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART parity mode.  <a href="group__uart.html#ga436e5a7bdb5f24decb5bfb0c87a83ff4">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:ga436e5a7bdb5f24decb5bfb0c87a83ff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaca4f14d23735c6afefb76cbee18e1db6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gaca4f14d23735c6afefb76cbee18e1db6">uart_stop_bit_count_t</a> { <br />
&#160;&#160;<a class="el" href="group__uart.html#ggaca4f14d23735c6afefb76cbee18e1db6a5a8829a108d8a46abb097a36cde051a7">kUART_OneStopBit</a> = 0U, 
<br />
&#160;&#160;<a class="el" href="group__uart.html#ggaca4f14d23735c6afefb76cbee18e1db6a9704b3ae3ee851acf324eb357f75ab56">kUART_TwoStopBit</a> = 1U
<br />
 }<tr class="memdesc:gaca4f14d23735c6afefb76cbee18e1db6"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART stop bit count.  <a href="group__uart.html#gaca4f14d23735c6afefb76cbee18e1db6">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:gaca4f14d23735c6afefb76cbee18e1db6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga700f3cd8e3800273a1591307cab6311c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a> { <br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311ca4cdb600c1c3989653226cd3366c4f62a">kUART_LinBreakInterruptEnable</a> = (UART_BDH_LBKDIE_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311ca71755319c216d0bdf79729c18c24cf64">kUART_RxActiveEdgeInterruptEnable</a> = (UART_BDH_RXEDGIE_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311ca5a0870233f2ffa8f5ca60d80f1e3ed14">kUART_TxDataRegEmptyInterruptEnable</a> = (UART_C2_TIE_MASK &lt;&lt; 8), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311cafd337213dae85b532dfaf9a90e2e5d7b">kUART_TransmissionCompleteInterruptEnable</a> = (UART_C2_TCIE_MASK &lt;&lt; 8), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311cac8a751a334e172413ab833cb0ccb01c3">kUART_RxDataRegFullInterruptEnable</a> = (UART_C2_RIE_MASK &lt;&lt; 8), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311ca078ea32d8587f92337a3dee495a1ceed">kUART_IdleLineInterruptEnable</a> = (UART_C2_ILIE_MASK &lt;&lt; 8), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311ca3e85b14c1b64dbfef1d0b4b7bc39c19d">kUART_RxOverrunInterruptEnable</a> = (UART_C3_ORIE_MASK &lt;&lt; 16), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311ca53d0fe2bb0cd90198c632f08488af4b3">kUART_NoiseErrorInterruptEnable</a> = (UART_C3_NEIE_MASK &lt;&lt; 16), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311ca00a387446d0ca7fd843968eca8af22a5">kUART_FramingErrorInterruptEnable</a> = (UART_C3_FEIE_MASK &lt;&lt; 16), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311cadc2475fa65313c6f1d13b36f0443b20a">kUART_ParityErrorInterruptEnable</a> = (UART_C3_PEIE_MASK &lt;&lt; 16), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311cae5fc42970a4a0093bb8e4154efec7871">kUART_RxFifoOverflowInterruptEnable</a> = (UART_CFIFO_TXOFE_MASK &lt;&lt; 24), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311caa37103885c5c08c5e90b525970fc8a13">kUART_TxFifoOverflowInterruptEnable</a> = (UART_CFIFO_RXUFE_MASK &lt;&lt; 24), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga700f3cd8e3800273a1591307cab6311ca829534874d4ac5a470b31d1f89c298ce">kUART_RxFifoUnderflowInterruptEnable</a> = (UART_CFIFO_RXUFE_MASK &lt;&lt; 24)
<br />
 }<tr class="memdesc:ga700f3cd8e3800273a1591307cab6311c"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART interrupt configuration structure, default settings all disabled.  <a href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:ga700f3cd8e3800273a1591307cab6311c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga259a53f363288115306a45d08fc66eb8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga259a53f363288115306a45d08fc66eb8">_uart_flags</a> { <br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a5209c671b2f2f064dc512655387e9e1a">kUART_TxDataRegEmptyFlag</a> = (UART_S1_TDRE_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a4468b60b2d78c34b93c9199df9e95d3a">kUART_TransmissionCompleteFlag</a> = (UART_S1_TC_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8aa86a34b2ea609eeeb63f98fea498e540">kUART_RxDataRegFullFlag</a> = (UART_S1_RDRF_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8ab2fc4e1b1164ed3e3fe7e19a39029b2c">kUART_IdleLineFlag</a> = (UART_S1_IDLE_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a93d3c56466b4656dcce08d9323d7afd8">kUART_RxOverrunFlag</a> = (UART_S1_OR_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8abd56419f102fb01c7bbc2c38f81ab360">kUART_NoiseErrorFlag</a> = (UART_S1_NF_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8aade5071fa56646adcda3562051443868">kUART_FramingErrorFlag</a> = (UART_S1_FE_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a0c92973ab1d527115fa01934c62a053d">kUART_ParityErrorFlag</a> = (UART_S1_PF_MASK), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a33e1c52e5cd9fb6e08a943b6bd9838c2">kUART_LinBreakFlag</a> = (UART_S2_LBKDIF_MASK &lt;&lt; 8), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8adcfe89feb164ff5b1720312922006a7a">kUART_RxActiveEdgeFlag</a> = (UART_S2_RXEDGIF_MASK &lt;&lt; 8), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a7a4521cd44a3272a94784670d1bf5a0c">kUART_RxActiveFlag</a> = (UART_S2_RAF_MASK &lt;&lt; 8), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a88474e8289f4a20d37678b49090a1589">kUART_NoiseErrorInRxDataRegFlag</a> = (UART_ED_NOISY_MASK &lt;&lt; 16), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8af8f4df7329de3454c4a4037e58c6c02c">kUART_ParityErrorInRxDataRegFlag</a> = (UART_ED_PARITYE_MASK &lt;&lt; 16), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a18002ee09e1b1bbdb9644f0d94651c3d">kUART_TxFifoEmptyFlag</a> = (UART_SFIFO_TXEMPT_MASK &lt;&lt; 24), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8aa1c817fca702f79b893dae8b9633a673">kUART_RxFifoEmptyFlag</a> = (UART_SFIFO_RXEMPT_MASK &lt;&lt; 24), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8acdbb6ae3c8977982f6415253ca289390">kUART_TxFifoOverflowFlag</a> = (UART_SFIFO_TXOF_MASK &lt;&lt; 24), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a0b620f9b02d998ebb3ea2aea21305b59">kUART_RxFifoOverflowFlag</a> = (UART_SFIFO_RXOF_MASK &lt;&lt; 24), 
<br />
&#160;&#160;<a class="el" href="group__uart.html#gga259a53f363288115306a45d08fc66eb8a0959b72698321d92b7835b200d6d5b91">kUART_RxFifoUnderflowFlag</a> = (UART_SFIFO_RXUF_MASK &lt;&lt; 24)
<br />
 }<tr class="memdesc:ga259a53f363288115306a45d08fc66eb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART status flags.  <a href="group__uart.html#ga259a53f363288115306a45d08fc66eb8">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:ga259a53f363288115306a45d08fc66eb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Initialization and deinitialization</h2></td></tr>
<tr class="memitem:gaa6162686a1aced16ff39c7d54d81fe5b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gaa6162686a1aced16ff39c7d54d81fe5b">UART_Init</a> (UART_Type *base, const <a class="el" href="group__uart.html#structuart__config__t">uart_config_t</a> *config, uint32_t srcClock_Hz)</td></tr>
<tr class="memdesc:gaa6162686a1aced16ff39c7d54d81fe5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a UART instance with user configuration structure and peripheral clock.  <a href="#gaa6162686a1aced16ff39c7d54d81fe5b">More...</a><br /></td></tr>
<tr class="separator:gaa6162686a1aced16ff39c7d54d81fe5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3ff48bc211831be33e6fe5c50eb671a0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga3ff48bc211831be33e6fe5c50eb671a0">UART_Deinit</a> (UART_Type *base)</td></tr>
<tr class="memdesc:ga3ff48bc211831be33e6fe5c50eb671a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes a UART instance.  <a href="#ga3ff48bc211831be33e6fe5c50eb671a0">More...</a><br /></td></tr>
<tr class="separator:ga3ff48bc211831be33e6fe5c50eb671a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47c7c09e04a0497f4530d553e27d96c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga47c7c09e04a0497f4530d553e27d96c5">UART_GetDefaultConfig</a> (<a class="el" href="group__uart.html#structuart__config__t">uart_config_t</a> *config)</td></tr>
<tr class="memdesc:ga47c7c09e04a0497f4530d553e27d96c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the default configuration structure.  <a href="#ga47c7c09e04a0497f4530d553e27d96c5">More...</a><br /></td></tr>
<tr class="separator:ga47c7c09e04a0497f4530d553e27d96c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae0482730b0d5f6b7f8d12aba1e4044e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gae0482730b0d5f6b7f8d12aba1e4044e5">UART_SetBaudRate</a> (UART_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz)</td></tr>
<tr class="memdesc:gae0482730b0d5f6b7f8d12aba1e4044e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the UART instance baud rate.  <a href="#gae0482730b0d5f6b7f8d12aba1e4044e5">More...</a><br /></td></tr>
<tr class="separator:gae0482730b0d5f6b7f8d12aba1e4044e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Status</h2></td></tr>
<tr class="memitem:ga28bf715678c0d3c8c3902e79455ee923"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga28bf715678c0d3c8c3902e79455ee923">UART_GetStatusFlags</a> (UART_Type *base)</td></tr>
<tr class="memdesc:ga28bf715678c0d3c8c3902e79455ee923"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get UART status flags.  <a href="#ga28bf715678c0d3c8c3902e79455ee923">More...</a><br /></td></tr>
<tr class="separator:ga28bf715678c0d3c8c3902e79455ee923"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc4cb85534361f836edca9454a6426c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gacc4cb85534361f836edca9454a6426c6">UART_ClearStatusFlags</a> (UART_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:gacc4cb85534361f836edca9454a6426c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears status flags with the provided mask.  <a href="#gacc4cb85534361f836edca9454a6426c6">More...</a><br /></td></tr>
<tr class="separator:gacc4cb85534361f836edca9454a6426c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Interrupts</h2></td></tr>
<tr class="memitem:ga49ecd761481a22956e3f46285038719c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga49ecd761481a22956e3f46285038719c">UART_EnableInterrupts</a> (UART_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga49ecd761481a22956e3f46285038719c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables UART interrupts according to the provided mask.  <a href="#ga49ecd761481a22956e3f46285038719c">More...</a><br /></td></tr>
<tr class="separator:ga49ecd761481a22956e3f46285038719c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3f24b6b9b730046a9a81918f9abe7d99"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga3f24b6b9b730046a9a81918f9abe7d99">UART_DisableInterrupts</a> (UART_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga3f24b6b9b730046a9a81918f9abe7d99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the UART interrupts according to the provided mask.  <a href="#ga3f24b6b9b730046a9a81918f9abe7d99">More...</a><br /></td></tr>
<tr class="separator:ga3f24b6b9b730046a9a81918f9abe7d99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga79bc0b880286ec0dc0543606fc772912"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga79bc0b880286ec0dc0543606fc772912">UART_GetEnabledInterrupts</a> (UART_Type *base)</td></tr>
<tr class="memdesc:ga79bc0b880286ec0dc0543606fc772912"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the enabled UART interrupts.  <a href="#ga79bc0b880286ec0dc0543606fc772912">More...</a><br /></td></tr>
<tr class="separator:ga79bc0b880286ec0dc0543606fc772912"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
DMA Control</h2></td></tr>
<tr class="memitem:ga3fe5d17fa2a833d844587f71d0dcecfe"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga3fe5d17fa2a833d844587f71d0dcecfe">UART_GetDataRegisterAddress</a> (UART_Type *base)</td></tr>
<tr class="memdesc:ga3fe5d17fa2a833d844587f71d0dcecfe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the UART data register address.  <a href="#ga3fe5d17fa2a833d844587f71d0dcecfe">More...</a><br /></td></tr>
<tr class="separator:ga3fe5d17fa2a833d844587f71d0dcecfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93a5d80d9f8ec9e61eb54db18efa5c63"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga93a5d80d9f8ec9e61eb54db18efa5c63">UART_EnableTxDMA</a> (UART_Type *base, bool enable)</td></tr>
<tr class="memdesc:ga93a5d80d9f8ec9e61eb54db18efa5c63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the UART transmitter DMA request.  <a href="#ga93a5d80d9f8ec9e61eb54db18efa5c63">More...</a><br /></td></tr>
<tr class="separator:ga93a5d80d9f8ec9e61eb54db18efa5c63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32e14856ac77e50800e733ba8ab9c448"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga32e14856ac77e50800e733ba8ab9c448">UART_EnableRxDMA</a> (UART_Type *base, bool enable)</td></tr>
<tr class="memdesc:ga32e14856ac77e50800e733ba8ab9c448"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the UART receiver DMA.  <a href="#ga32e14856ac77e50800e733ba8ab9c448">More...</a><br /></td></tr>
<tr class="separator:ga32e14856ac77e50800e733ba8ab9c448"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Bus Operations</h2></td></tr>
<tr class="memitem:gaf2ed68f3dd6ee8a272e9afd8ebd84f93"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gaf2ed68f3dd6ee8a272e9afd8ebd84f93">UART_EnableTx</a> (UART_Type *base, bool enable)</td></tr>
<tr class="memdesc:gaf2ed68f3dd6ee8a272e9afd8ebd84f93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the UART transmitter.  <a href="#gaf2ed68f3dd6ee8a272e9afd8ebd84f93">More...</a><br /></td></tr>
<tr class="separator:gaf2ed68f3dd6ee8a272e9afd8ebd84f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa503e36c8ce82f1042ce186b9863871f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gaa503e36c8ce82f1042ce186b9863871f">UART_EnableRx</a> (UART_Type *base, bool enable)</td></tr>
<tr class="memdesc:gaa503e36c8ce82f1042ce186b9863871f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the UART receiver.  <a href="#gaa503e36c8ce82f1042ce186b9863871f">More...</a><br /></td></tr>
<tr class="separator:gaa503e36c8ce82f1042ce186b9863871f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad67794d80b7ee2d3292b41af6ff1e100"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gad67794d80b7ee2d3292b41af6ff1e100">UART_WriteBlocking</a> (UART_Type *base, const uint8_t *data, size_t length)</td></tr>
<tr class="memdesc:gad67794d80b7ee2d3292b41af6ff1e100"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes to the TX register using a blocking method.  <a href="#gad67794d80b7ee2d3292b41af6ff1e100">More...</a><br /></td></tr>
<tr class="separator:gad67794d80b7ee2d3292b41af6ff1e100"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga371d2ceda535de3a74beba5a3465fab0"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga371d2ceda535de3a74beba5a3465fab0">UART_WriteByte</a> (UART_Type *base, uint8_t data)</td></tr>
<tr class="memdesc:ga371d2ceda535de3a74beba5a3465fab0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes to the TX register.  <a href="#ga371d2ceda535de3a74beba5a3465fab0">More...</a><br /></td></tr>
<tr class="separator:ga371d2ceda535de3a74beba5a3465fab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga23c2382838fe05bd24fc0744b2322153"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga23c2382838fe05bd24fc0744b2322153">UART_ReadBlocking</a> (UART_Type *base, uint8_t *data, size_t length)</td></tr>
<tr class="memdesc:ga23c2382838fe05bd24fc0744b2322153"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read RX data register using a blocking method.  <a href="#ga23c2382838fe05bd24fc0744b2322153">More...</a><br /></td></tr>
<tr class="separator:ga23c2382838fe05bd24fc0744b2322153"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3728011ac7906f3e03bb677b0f9cf7b4"><td class="memItemLeft" align="right" valign="top">static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga3728011ac7906f3e03bb677b0f9cf7b4">UART_ReadByte</a> (UART_Type *base)</td></tr>
<tr class="memdesc:ga3728011ac7906f3e03bb677b0f9cf7b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the RX register directly.  <a href="#ga3728011ac7906f3e03bb677b0f9cf7b4">More...</a><br /></td></tr>
<tr class="separator:ga3728011ac7906f3e03bb677b0f9cf7b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Transactional</h2></td></tr>
<tr class="memitem:gaffdc577a350c4cba18f20200aaac30cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gaffdc577a350c4cba18f20200aaac30cb">UART_CreateHandle</a> (UART_Type *base, uart_handle_t *handle, <a class="el" href="group__uart.html#ga2868b6ea396ab212547f2157380429c5">uart_transfer_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:gaffdc577a350c4cba18f20200aaac30cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the UART handle.  <a href="#gaffdc577a350c4cba18f20200aaac30cb">More...</a><br /></td></tr>
<tr class="separator:gaffdc577a350c4cba18f20200aaac30cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2263797ea1e1b0ef07898d6e6fc16049"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga2263797ea1e1b0ef07898d6e6fc16049">UART_StartRingBuffer</a> (UART_Type *base, uart_handle_t *handle, uint8_t *ringBuffer, size_t ringBufferSize)</td></tr>
<tr class="memdesc:ga2263797ea1e1b0ef07898d6e6fc16049"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets up the RX ring buffer.  <a href="#ga2263797ea1e1b0ef07898d6e6fc16049">More...</a><br /></td></tr>
<tr class="separator:ga2263797ea1e1b0ef07898d6e6fc16049"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd168b3e4043dfa92feb242fcfce0a35"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gadd168b3e4043dfa92feb242fcfce0a35">UART_StopRingBuffer</a> (UART_Type *base, uart_handle_t *handle)</td></tr>
<tr class="memdesc:gadd168b3e4043dfa92feb242fcfce0a35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts the background transfer and uninstalls the ring buffer.  <a href="#gadd168b3e4043dfa92feb242fcfce0a35">More...</a><br /></td></tr>
<tr class="separator:gadd168b3e4043dfa92feb242fcfce0a35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga63a181530dc62200a8eed10ec5cf5167"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga63a181530dc62200a8eed10ec5cf5167">UART_SendNonBlocking</a> (UART_Type *base, uart_handle_t *handle, <a class="el" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:ga63a181530dc62200a8eed10ec5cf5167"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transmits a buffer of data using the interrupt method.  <a href="#ga63a181530dc62200a8eed10ec5cf5167">More...</a><br /></td></tr>
<tr class="separator:ga63a181530dc62200a8eed10ec5cf5167"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3e1869195f3e7bd6c38d7328aa3df131"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga3e1869195f3e7bd6c38d7328aa3df131">UART_AbortSend</a> (UART_Type *base, uart_handle_t *handle)</td></tr>
<tr class="memdesc:ga3e1869195f3e7bd6c38d7328aa3df131"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts the interrupt driven data transmit.  <a href="#ga3e1869195f3e7bd6c38d7328aa3df131">More...</a><br /></td></tr>
<tr class="separator:ga3e1869195f3e7bd6c38d7328aa3df131"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf3ae8db47d2adb4516b367dc85f5d08c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gaf3ae8db47d2adb4516b367dc85f5d08c">UART_GetSendCount</a> (UART_Type *base, uart_handle_t *handle, uint32_t *count)</td></tr>
<tr class="memdesc:gaf3ae8db47d2adb4516b367dc85f5d08c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of bytes that have been written to UART TX register.  <a href="#gaf3ae8db47d2adb4516b367dc85f5d08c">More...</a><br /></td></tr>
<tr class="separator:gaf3ae8db47d2adb4516b367dc85f5d08c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5dfacd59d3fb1a18c06c6bf1519cbc9c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga5dfacd59d3fb1a18c06c6bf1519cbc9c">UART_ReceiveNonBlocking</a> (UART_Type *base, uart_handle_t *handle, <a class="el" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> *xfer, size_t *receivedBytes)</td></tr>
<tr class="memdesc:ga5dfacd59d3fb1a18c06c6bf1519cbc9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receives a buffer of data using an interrupt method.  <a href="#ga5dfacd59d3fb1a18c06c6bf1519cbc9c">More...</a><br /></td></tr>
<tr class="separator:ga5dfacd59d3fb1a18c06c6bf1519cbc9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0ec8215440a7d2f80a421d557b636035"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga0ec8215440a7d2f80a421d557b636035">UART_AbortReceive</a> (UART_Type *base, uart_handle_t *handle)</td></tr>
<tr class="memdesc:ga0ec8215440a7d2f80a421d557b636035"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts the interrupt-driven data receiving.  <a href="#ga0ec8215440a7d2f80a421d557b636035">More...</a><br /></td></tr>
<tr class="separator:ga0ec8215440a7d2f80a421d557b636035"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8dbd1d7bc0e2365ca9c128418cf8cf2e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga8dbd1d7bc0e2365ca9c128418cf8cf2e">UART_GetReceiveCount</a> (UART_Type *base, uart_handle_t *handle, uint32_t *count)</td></tr>
<tr class="memdesc:ga8dbd1d7bc0e2365ca9c128418cf8cf2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of bytes that have been received.  <a href="#ga8dbd1d7bc0e2365ca9c128418cf8cf2e">More...</a><br /></td></tr>
<tr class="separator:ga8dbd1d7bc0e2365ca9c128418cf8cf2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeb53a26a18473713bf2a8236af933e06"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#gaeb53a26a18473713bf2a8236af933e06">UART_HandleIRQ</a> (UART_Type *base, uart_handle_t *handle)</td></tr>
<tr class="memdesc:gaeb53a26a18473713bf2a8236af933e06"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART IRQ handle function.  <a href="#gaeb53a26a18473713bf2a8236af933e06">More...</a><br /></td></tr>
<tr class="separator:gaeb53a26a18473713bf2a8236af933e06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga309aa9807039e6cf5c2f05be0b0e745f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__uart.html#ga309aa9807039e6cf5c2f05be0b0e745f">UART_HandleErrorIRQ</a> (UART_Type *base, uart_handle_t *handle)</td></tr>
<tr class="memdesc:ga309aa9807039e6cf5c2f05be0b0e745f"><td class="mdescLeft">&#160;</td><td class="mdescRight">UART Error IRQ handle function.  <a href="#ga309aa9807039e6cf5c2f05be0b0e745f">More...</a><br /></td></tr>
<tr class="separator:ga309aa9807039e6cf5c2f05be0b0e745f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Usage Information</h2>
<p>The KSDK provides a peripheral driver for the Universal Asynchronous Receiver/Transmitter (UART) module of Kinetis devices.</p>
<p>UART driver includes 2 parts: functional APIs and transactional APIs.</p>
<p>Functional APIs are feature/property target low level APIs. Functional APIs are used for UART initialization/configuration/operation for optimization/customization purpose. Using the functional API requires the knowledge of the UART peripheral and know how to organize functional APIs to meet the application requirements. All functional API use the peripheral base address as the first parameter. UART functional operation groups provide the functional APIs set.</p>
<p>Transactional APIs are transaction target high level APIs. Transactional APIs can be used to enable the peripheral quickly and in the application if the code size and performance of transactional APIs can satisfy the requirements. If the code size and performance are critical requirements, see the transactional API implementation and write custom code. All transactional APIs use the uart_handle_t as the first parameter. Initialize the handle by calling the <a class="el" href="group__uart.html#gaffdc577a350c4cba18f20200aaac30cb" title="Initializes the UART handle. ">UART_CreateHandle()</a> API.</p>
<p>Transactional APIs support asynchronous transfer, which means that the functions <a class="el" href="group__uart.html#ga63a181530dc62200a8eed10ec5cf5167" title="Transmits a buffer of data using the interrupt method. ">UART_SendNonBlocking()</a> and <a class="el" href="group__uart.html#ga5dfacd59d3fb1a18c06c6bf1519cbc9c" title="Receives a buffer of data using an interrupt method. ">UART_ReceiveNonBlocking()</a> set up an interrupt for data transfer. When the transfer completes, the upper layer is notified through a callback function with the kStatus_UART_TxIdle and kStatus_UART_RxIdle.</p>
<p>Transactional receive APIs support the ring buffer. Prepare the memory for the ring buffer and pass in the start address and size while calling the <a class="el" href="group__uart.html#gaffdc577a350c4cba18f20200aaac30cb" title="Initializes the UART handle. ">UART_CreateHandle()</a>. If passing NULL, the ring buffer feature is disabled. When the ring buffer is enabled, the received data is saved to the ring buffer in the background. The <a class="el" href="group__uart.html#ga5dfacd59d3fb1a18c06c6bf1519cbc9c" title="Receives a buffer of data using an interrupt method. ">UART_ReceiveNonBlocking()</a> function first gets data from the ring buffer. If the ring buffer does not have enough data, the function first returns the data in the ring buffer and then saves the received data to user memory. When all data is received, the upper layer is informed through a callback with the kStatus_UART_RxIdle.</p>
<p>If the receive ring buffer is full, the upper layer is informed through a callback with the kStatus_UART_RxRingBufferOverrun. In the callback function, the upper layer reads data out from the ring buffer. If not, the oldest data is overwritten by the new data.</p>
<p>The ring buffer size is specified when creating the handle. Note that one byte is reserved for the ring buffer maintenance. When creating handle using the following code:</p>
<div class="fragment"><div class="line"><a class="code" href="group__uart.html#gaffdc577a350c4cba18f20200aaac30cb">UART_CreateHandle</a>(&amp;handle, UART0, &amp;ringBuffer, 32);</div></div><!-- fragment --><p>In this example, the buffer size is 32, but only 31 bytes are used for saving data.</p>
<h1><a class="anchor" id="UARTFunc"></a>
Function groups</h1>
<h2><a class="anchor" id="UARTInit"></a>
Initialization and deinitialization</h2>
<p>The <a class="el" href="group__uart.html#gaa6162686a1aced16ff39c7d54d81fe5b" title="Initializes a UART instance with user configuration structure and peripheral clock. ">UART_Init()</a> function initializes UART with specified configurations. The <a class="el" href="group__uart.html#ga47c7c09e04a0497f4530d553e27d96c5" title="Gets the default configuration structure. ">UART_GetDefaultConfig()</a> function gets the default configurations.</p>
<h2><a class="anchor" id="UARTStatus"></a>
Status</h2>
<p>Provides functions to get and clear the UART status.</p>
<h2><a class="anchor" id="UARTInterrupt"></a>
Interrupt</h2>
<p>Provides functions to enable/disable UART interrupts and get the current enabled interrupts.</p>
<h2><a class="anchor" id="UARTDmaCtrl"></a>
DMA Control</h2>
<p>Provide functions to enable/disable UART to generate the DMA request.</p>
<h2><a class="anchor" id="UARTBusOperation"></a>
Bus Operations</h2>
<p>Provide functions to enable/disable transmit/receive and functions to write/read data.</p>
<h2><a class="anchor" id="UARTTrans"></a>
Transactional</h2>
<p>Provide functions to send/receive data through interrupt or DMA.</p>
<h1><a class="anchor" id="UARTCase"></a>
Typical use case</h1>
<h2><a class="anchor" id="UARTCasePolling"></a>
UART Send/receive using a polling method</h2>
<div class="fragment"><div class="line">uint8_t ch;</div><div class="line"><a class="code" href="group__uart.html#ga47c7c09e04a0497f4530d553e27d96c5">UART_GetDefaultConfig</a>(&amp;user_config);</div><div class="line">user_config.baudRate_Bps = 115200U;</div><div class="line">user_config.enableTx = <span class="keyword">true</span>;</div><div class="line">user_config.enableRx = <span class="keyword">true</span>;</div><div class="line"></div><div class="line"><a class="code" href="group__uart.html#gaa6162686a1aced16ff39c7d54d81fe5b">UART_Init</a>(UART1,&amp;user_config,120000000U);</div><div class="line"></div><div class="line"><span class="keywordflow">while</span>(1)</div><div class="line">{</div><div class="line">    <a class="code" href="group__uart.html#ga23c2382838fe05bd24fc0744b2322153">UART_ReadBlocking</a>(UART1, &amp;ch, 1);</div><div class="line">    <a class="code" href="group__uart.html#gad67794d80b7ee2d3292b41af6ff1e100">UART_WriteBlocking</a>(UART1, &amp;ch, 1);</div><div class="line">}</div></div><!-- fragment --><h2><a class="anchor" id="UARTCaseInterrupt"></a>
UART Send/receive using an interrupt method</h2>
<div class="fragment"><div class="line">uart_handle_t g_uartHandle;</div><div class="line"><a class="code" href="group__uart.html#structuart__config__t">uart_config_t</a> user_config;</div><div class="line"><a class="code" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> sendXfer;</div><div class="line"><a class="code" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> receiveXfer;</div><div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> txFinished;</div><div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> rxFinished;</div><div class="line">uint8_t sendData[] = [<span class="charliteral">&#39;H&#39;</span>, <span class="charliteral">&#39;e&#39;</span>, <span class="charliteral">&#39;l&#39;</span>, <span class="charliteral">&#39;l&#39;</span>, <span class="charliteral">&#39;o&#39;</span>];</div><div class="line">uint8_t receiveData[32];</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> UART_UserCallback(uart_handle_t *handle, <a class="code" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> status, <span class="keywordtype">void</span> *userData)</div><div class="line">{</div><div class="line">    userData = userData;</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (<a class="code" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84baf36c829b1b889517bf775c0d7ce29fa6">kStatus_UART_TxIdle</a> == status)</div><div class="line">    {</div><div class="line">        txFinished = <span class="keyword">true</span>;</div><div class="line">    }</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (<a class="code" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84bae0877b14627ed2aa8ddb2bf5b033f407">kStatus_UART_RxIdle</a> == status)</div><div class="line">    {</div><div class="line">        rxFinished = <span class="keyword">true</span>;</div><div class="line">    }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> <a class="code" href="group__bl__core.html#ga840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)</div><div class="line">{</div><div class="line">    <span class="comment">//...</span></div><div class="line"></div><div class="line">    <a class="code" href="group__uart.html#ga47c7c09e04a0497f4530d553e27d96c5">UART_GetDefaultConfig</a>(&amp;user_config);</div><div class="line">    user_config.<a class="code" href="group__uart.html#aa5df547b4cb95d3c959373cf6fa672b5">baudRate_Bps</a> = 115200U;</div><div class="line">    user_config.<a class="code" href="group__uart.html#a221caf5c134ec8fcee82b8505ee75731">enableTx</a> = <span class="keyword">true</span>;</div><div class="line">    user_config.<a class="code" href="group__uart.html#ac6fe4a8b966fb5611f77358b819671b2">enableRx</a> = <span class="keyword">true</span>;</div><div class="line"></div><div class="line">    <a class="code" href="group__uart.html#gaa6162686a1aced16ff39c7d54d81fe5b">UART_Init</a>(UART1, &amp;user_config, 120000000U);</div><div class="line">    <a class="code" href="group__uart.html#gaffdc577a350c4cba18f20200aaac30cb">UART_CreateHandle</a>(&amp;g_uartHandle, UART1, NULL, 0);</div><div class="line">    UART_SetTransferCallback(&amp;g_uartHandle, UART_UserCallback, NULL);</div><div class="line"></div><div class="line">    <span class="comment">// Prepare to send.</span></div><div class="line">    sendXfer.<a class="code" href="group__uart.html#abe222f6d3581e7920dcad5306cc906a8">data</a> = sendData</div><div class="line">    sendXfer.<a class="code" href="group__uart.html#a78f9703861dd365a513c2c5aab9f9239">dataSize</a> = <span class="keyword">sizeof</span>(sendData)/<span class="keyword">sizeof</span>(sendData[0]);</div><div class="line">    txFinished = <span class="keyword">false</span>;</div><div class="line"></div><div class="line">    <span class="comment">// Send out.</span></div><div class="line">    <a class="code" href="group__uart.html#ga63a181530dc62200a8eed10ec5cf5167">UART_SendNonBlocking</a>(&amp;g_uartHandle, &amp;sendXfer);</div><div class="line"></div><div class="line">    <span class="comment">// Wait send finished.</span></div><div class="line">    <span class="keywordflow">while</span> (!txFinished)</div><div class="line">    {</div><div class="line">    }</div><div class="line"></div><div class="line">    <span class="comment">// Prepare to receive.</span></div><div class="line">    receiveXfer.<a class="code" href="group__uart.html#abe222f6d3581e7920dcad5306cc906a8">data</a> = receiveData;</div><div class="line">    receiveXfer.<a class="code" href="group__uart.html#a78f9703861dd365a513c2c5aab9f9239">dataSize</a> = <span class="keyword">sizeof</span>(receiveData)/<span class="keyword">sizeof</span>(receiveData[0]);</div><div class="line">    rxFinished = <span class="keyword">false</span>;</div><div class="line"></div><div class="line">    <span class="comment">// Receive.</span></div><div class="line">    <a class="code" href="group__uart.html#ga5dfacd59d3fb1a18c06c6bf1519cbc9c">UART_ReceiveNonBlocking</a>(&amp;g_uartHandle, &amp;receiveXfer, NULL);</div><div class="line"></div><div class="line">    <span class="comment">// Wait receive finished.</span></div><div class="line">    <span class="keywordflow">while</span> (!rxFinished)</div><div class="line">    {</div><div class="line">    }</div><div class="line"></div><div class="line">    <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><h2><a class="anchor" id="UARTCaseRing"></a>
UART Receive using the ringbuffer feature</h2>
<div class="fragment"><div class="line"><span class="preprocessor">#define RING_BUFFER_SIZE 64</span></div><div class="line"><span class="preprocessor">#define RX_DATA_SIZE     32</span></div><div class="line"></div><div class="line">uart_handle_t g_uartHandle;</div><div class="line"><a class="code" href="group__uart.html#structuart__config__t">uart_config_t</a> user_config;</div><div class="line"><a class="code" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> sendXfer;</div><div class="line"><a class="code" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> receiveXfer;</div><div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> txFinished;</div><div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> rxFinished;</div><div class="line">uint8_t receiveData[RX_DATA_SIZE];</div><div class="line">uint8_t ringBuffer[RING_BUFFER_SIZE];</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> UART_UserCallback(uart_handle_t *handle, <a class="code" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> status, <span class="keywordtype">void</span> *userData)</div><div class="line">{</div><div class="line">    userData = userData;</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (<a class="code" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84bae0877b14627ed2aa8ddb2bf5b033f407">kStatus_UART_RxIdle</a> == status)</div><div class="line">    {</div><div class="line">        rxFinished = <span class="keyword">true</span>;</div><div class="line">    }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> <a class="code" href="group__bl__core.html#ga840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)</div><div class="line">{</div><div class="line">    <span class="keywordtype">size_t</span> bytesRead;</div><div class="line">    <span class="comment">//...</span></div><div class="line"></div><div class="line">    <a class="code" href="group__uart.html#ga47c7c09e04a0497f4530d553e27d96c5">UART_GetDefaultConfig</a>(&amp;user_config);</div><div class="line">    user_config.<a class="code" href="group__uart.html#aa5df547b4cb95d3c959373cf6fa672b5">baudRate_Bps</a> = 115200U;</div><div class="line">    user_config.<a class="code" href="group__uart.html#a221caf5c134ec8fcee82b8505ee75731">enableTx</a> = <span class="keyword">true</span>;</div><div class="line">    user_config.<a class="code" href="group__uart.html#ac6fe4a8b966fb5611f77358b819671b2">enableRx</a> = <span class="keyword">true</span>;</div><div class="line"></div><div class="line">    <a class="code" href="group__uart.html#gaa6162686a1aced16ff39c7d54d81fe5b">UART_Init</a>(UART1, &amp;user_config, 120000000U);</div><div class="line">    <a class="code" href="group__uart.html#gaffdc577a350c4cba18f20200aaac30cb">UART_CreateHandle</a>(&amp;g_uartHandle, UART1, &amp;ringBuffer, RING_BUFFER_SIZE);</div><div class="line">    UART_SetTransferCallback(&amp;g_uartHandle, UART_UserCallback, NULL);</div><div class="line"></div><div class="line">    <span class="comment">// Now the RX is working in background, receive in to ring buffer.</span></div><div class="line"></div><div class="line">    <span class="comment">// Prepare to receive.</span></div><div class="line">    receiveXfer.<a class="code" href="group__uart.html#abe222f6d3581e7920dcad5306cc906a8">data</a> = receiveData;</div><div class="line">    receiveXfer.<a class="code" href="group__uart.html#a78f9703861dd365a513c2c5aab9f9239">dataSize</a> = RX_DATA_SIZE;</div><div class="line">    rxFinished = <span class="keyword">false</span>;</div><div class="line"></div><div class="line">    <span class="comment">// Receive.</span></div><div class="line">    <a class="code" href="group__uart.html#ga5dfacd59d3fb1a18c06c6bf1519cbc9c">UART_ReceiveNonBlocking</a>(&amp;g_uartHandle, &amp;receiveXfer, &amp;bytesRead);</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (bytesRead = RX_DATA_SIZE) <span class="comment">/* Have read enough data. */</span></div><div class="line">    {</div><div class="line">        ;</div><div class="line">    }</div><div class="line">    <span class="keywordflow">else</span></div><div class="line">    {</div><div class="line">        <span class="keywordflow">if</span> (bytesRead) <span class="comment">/* Received some data, process first. */</span></div><div class="line">        {</div><div class="line">            ;</div><div class="line">        }</div><div class="line"></div><div class="line">        <span class="comment">// Wait receive finished.</span></div><div class="line">        <span class="keywordflow">while</span> (!rxFinished)</div><div class="line">        {</div><div class="line">        }</div><div class="line">    }</div><div class="line"></div><div class="line">    <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><h2><a class="anchor" id="UARTCaseDma"></a>
UART Send/Receive using the DMA method</h2>
<div class="fragment"><div class="line">uart_handle_t g_uartHandle;</div><div class="line">dma_handle_t g_uartTxDmaHandle;</div><div class="line">dma_handle_t g_uartRxDmaHandle;</div><div class="line"><a class="code" href="group__uart.html#structuart__config__t">uart_config_t</a> user_config;</div><div class="line"><a class="code" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> sendXfer;</div><div class="line"><a class="code" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> receiveXfer;</div><div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> txFinished;</div><div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> rxFinished;</div><div class="line">uint8_t sendData[] = [<span class="charliteral">&#39;H&#39;</span>, <span class="charliteral">&#39;e&#39;</span>, <span class="charliteral">&#39;l&#39;</span>, <span class="charliteral">&#39;l&#39;</span>, <span class="charliteral">&#39;o&#39;</span>];</div><div class="line">uint8_t receiveData[32];</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> UART_UserCallback(uart_handle_t *handle, <a class="code" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> status, <span class="keywordtype">void</span> *userData)</div><div class="line">{</div><div class="line">    userData = userData;</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (<a class="code" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84baf36c829b1b889517bf775c0d7ce29fa6">kStatus_UART_TxIdle</a> == status)</div><div class="line">    {</div><div class="line">        txFinished = <span class="keyword">true</span>;</div><div class="line">    }</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (<a class="code" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84bae0877b14627ed2aa8ddb2bf5b033f407">kStatus_UART_RxIdle</a> == status)</div><div class="line">    {</div><div class="line">        rxFinished = <span class="keyword">true</span>;</div><div class="line">    }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> <a class="code" href="group__bl__core.html#ga840291bc02cba5474a4cb46a9b9566fe">main</a>(<span class="keywordtype">void</span>)</div><div class="line">{</div><div class="line">    <span class="comment">//...</span></div><div class="line"></div><div class="line">    <a class="code" href="group__uart.html#ga47c7c09e04a0497f4530d553e27d96c5">UART_GetDefaultConfig</a>(&amp;user_config);</div><div class="line">    user_config.<a class="code" href="group__uart.html#aa5df547b4cb95d3c959373cf6fa672b5">baudRate_Bps</a> = 115200U;</div><div class="line">    user_config.<a class="code" href="group__uart.html#a221caf5c134ec8fcee82b8505ee75731">enableTx</a> = <span class="keyword">true</span>;</div><div class="line">    user_config.<a class="code" href="group__uart.html#ac6fe4a8b966fb5611f77358b819671b2">enableRx</a> = <span class="keyword">true</span>;</div><div class="line"></div><div class="line">    <a class="code" href="group__uart.html#gaa6162686a1aced16ff39c7d54d81fe5b">UART_Init</a>(UART1, &amp;user_config, 120000000U);</div><div class="line"></div><div class="line">    <span class="comment">// Set up the DMA</span></div><div class="line">    DMAMUX_Init(DMAMUX0);</div><div class="line">    DMAMUX_SetSource(DMAMUX0, UART_TX_DMA_CHANNEL, UART_TX_DMA_REQUEST);</div><div class="line">    DMAMUX_EnableChannel(DMAMUX0, UART_TX_DMA_CHANNEL);</div><div class="line">    DMAMUX_SetSource(DMAMUX0, UART_RX_DMA_CHANNEL, UART_RX_DMA_REQUEST);</div><div class="line">    DMAMUX_EnableChannel(DMAMUX0, UART_RX_DMA_CHANNEL);</div><div class="line"></div><div class="line">    DMA_Init(DMA0);</div><div class="line"></div><div class="line">    <span class="comment">/* Create DMA handle. */</span></div><div class="line">    DMA_CreateHandle(&amp;g_uartTxDmaHandle, DMA0, UART_TX_DMA_CHANNEL);</div><div class="line">    DMA_CreateHandle(&amp;g_uartRxDmaHandle, DMA0, UART_RX_DMA_CHANNEL);</div><div class="line"></div><div class="line">    UART_CreateHandleDMA(&amp;g_uartHandle, UART1, &amp;g_uartTxDmaHandle, &amp;g_uartRxDmaHandle);</div><div class="line">    UART_SetTransferCallbackDMA(&amp;g_uartDmaHandle, UART_UserCallback, NULL);</div><div class="line"></div><div class="line">    <span class="comment">// Prepare to send.</span></div><div class="line">    sendXfer.<a class="code" href="group__uart.html#abe222f6d3581e7920dcad5306cc906a8">data</a> = sendData</div><div class="line">    sendXfer.<a class="code" href="group__uart.html#a78f9703861dd365a513c2c5aab9f9239">dataSize</a> = <span class="keyword">sizeof</span>(sendData)/<span class="keyword">sizeof</span>(sendData[0]);</div><div class="line">    txFinished = <span class="keyword">false</span>;</div><div class="line"></div><div class="line">    <span class="comment">// Send out.</span></div><div class="line">    UART_SendDMA(&amp;g_uartHandle, &amp;sendXfer);</div><div class="line"></div><div class="line">    <span class="comment">// Wait send finished.</span></div><div class="line">    <span class="keywordflow">while</span> (!txFinished)</div><div class="line">    {</div><div class="line">    }</div><div class="line"></div><div class="line">    <span class="comment">// Prepare to receive.</span></div><div class="line">    receiveXfer.<a class="code" href="group__uart.html#abe222f6d3581e7920dcad5306cc906a8">data</a> = receiveData;</div><div class="line">    receiveXfer.<a class="code" href="group__uart.html#a78f9703861dd365a513c2c5aab9f9239">dataSize</a> = <span class="keyword">sizeof</span>(receiveData)/<span class="keyword">sizeof</span>(receiveData[0]);</div><div class="line">    rxFinished = <span class="keyword">false</span>;</div><div class="line"></div><div class="line">    <span class="comment">// Receive.</span></div><div class="line">    UART_ReceiveDMA(&amp;g_uartHandle, &amp;receiveXfer, NULL);</div><div class="line"></div><div class="line">    <span class="comment">// Wait receive finished.</span></div><div class="line">    <span class="keywordflow">while</span> (!rxFinished)</div><div class="line">    {</div><div class="line">    }</div><div class="line"></div><div class="line">    <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --> <hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structuart__config__t" id="structuart__config__t"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct uart_config_t</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>UART configuration structure. </p>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="aa5df547b4cb95d3c959373cf6fa672b5"></a>uint32_t</td>
<td class="fieldname">
baudRate_Bps</td>
<td class="fielddoc">
<p>UART baud rate </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ac6fe4a8b966fb5611f77358b819671b2"></a>bool</td>
<td class="fieldname">
enableRx</td>
<td class="fielddoc">
<p>Enable RX </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a221caf5c134ec8fcee82b8505ee75731"></a>bool</td>
<td class="fieldname">
enableTx</td>
<td class="fielddoc">
<p>Enable TX </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a316fd94f4c5e6d15a3cda133d5dd5683"></a><a class="el" href="group__uart.html#ga436e5a7bdb5f24decb5bfb0c87a83ff4">uart_parity_mode_t</a></td>
<td class="fieldname">
parityMode</td>
<td class="fielddoc">
<p>Parity mode, disabled (default), even, odd </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a6435c6f3b7d32b90ea713817d7eb1422"></a>uint8_t</td>
<td class="fieldname">
rxFifoWatermark</td>
<td class="fielddoc">
<p>RX FIFO watermark </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a6fc8998d179b6e0df5963bde20aefcc7"></a><a class="el" href="group__uart.html#gaca4f14d23735c6afefb76cbee18e1db6">uart_stop_bit_count_t</a></td>
<td class="fieldname">
stopBitCount</td>
<td class="fielddoc">
<p>Number of stop bits, 1 stop bit (default) or 2 stop bits </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a0fcd9277fef344389cadcf9396173e66"></a>uint8_t</td>
<td class="fieldname">
txFifoWatermark</td>
<td class="fielddoc">
<p>TX FIFO watermark </p>
</td></tr>
</table>

</div>
</div>
<a name="structuart__transfer__t" id="structuart__transfer__t"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct uart_transfer_t</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>UART transfer structure. </p>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="abe222f6d3581e7920dcad5306cc906a8"></a>uint8_t *</td>
<td class="fieldname">
data</td>
<td class="fielddoc">
<p>The buffer of data to be transfer. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a78f9703861dd365a513c2c5aab9f9239"></a>size_t</td>
<td class="fieldname">
dataSize</td>
<td class="fielddoc">
<p>The byte count to be transfer. </p>
</td></tr>
</table>

</div>
</div>
<a name="struct__uart__handle" id="struct__uart__handle"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct _uart_handle</td>
        </tr>
      </table>
</div><div class="memdoc">
<div class="textblock"><p>UART handle structure. </p>
</div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="aa499a13beb1e3ebd00438325f5107a65"></a><a class="el" href="group__uart.html#ga2868b6ea396ab212547f2157380429c5">uart_transfer_callback_t</a></td>
<td class="fieldname">
callback</td>
<td class="fielddoc">
<p>Callback function. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="aa58335de5bfa8923228432b62ea9308a"></a>uint8_t *volatile</td>
<td class="fieldname">
rxData</td>
<td class="fielddoc">
<p>Address of remaining data to receive. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ae1b7c6ae1b7e7ead628afe5410fa3f31"></a>volatile size_t</td>
<td class="fieldname">
rxDataSize</td>
<td class="fielddoc">
<p>Size of the remaining data to receive. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a180fd12c1a88bb61ac4b817f4e4e6bcd"></a>size_t</td>
<td class="fieldname">
rxDataSizeAll</td>
<td class="fielddoc">
<p>Size of the data to receive. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a522d206ac2b0dde63cd3e7190853eaf2"></a>uint8_t *</td>
<td class="fieldname">
rxRingBuffer</td>
<td class="fielddoc">
<p>Start address of the receiver ring buffer. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ac4f75206cf9b8009cdf64a30e05b01d8"></a>volatile uint16_t</td>
<td class="fieldname">
rxRingBufferHead</td>
<td class="fielddoc">
<p>Index for the driver to store received data into ring buffer. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a3fc25566538e662d74eb1444598a8277"></a>size_t</td>
<td class="fieldname">
rxRingBufferSize</td>
<td class="fielddoc">
<p>Size of the ring buffer. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a89b3f14260503bd82300f27872236474"></a>volatile uint16_t</td>
<td class="fieldname">
rxRingBufferTail</td>
<td class="fielddoc">
<p>Index for the user to get data from the ring buffer. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a6f289c8f3bd5e967fb808de6da7f1c0c"></a>volatile uint8_t</td>
<td class="fieldname">
rxState</td>
<td class="fielddoc">
<p>RX transfer state </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="ab56d8f300582ce9d7f4a79729124739d"></a>uint8_t *volatile</td>
<td class="fieldname">
txData</td>
<td class="fielddoc">
<p>Address of remaining data to send. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a1f9d0ac47a5cdabb34988d5d811aceaf"></a>volatile size_t</td>
<td class="fieldname">
txDataSize</td>
<td class="fielddoc">
<p>Size of the remaining data to send. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a733be3042be24bb3eb6f0c6a82d28862"></a>size_t</td>
<td class="fieldname">
txDataSizeAll</td>
<td class="fielddoc">
<p>Size of the data to send out. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a4e027f3342bad321ec60b56d164eb068"></a>volatile uint8_t</td>
<td class="fieldname">
txState</td>
<td class="fielddoc">
<p>TX transfer state. </p>
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a2e294dd14122c554baa0665072b4ca7a"></a>void *</td>
<td class="fieldname">
userData</td>
<td class="fielddoc">
<p>UART callback function parameter. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga259a53f363288115306a45d08fc66eb8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__uart.html#ga259a53f363288115306a45d08fc66eb8">_uart_flags</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>UART status flags. </p>
<p>This provides constants for the UART status flags for use in the UART functions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a5209c671b2f2f064dc512655387e9e1a"></a>kUART_TxDataRegEmptyFlag&#160;</td><td class="fielddoc">
<p>TX data register empty flag. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a4468b60b2d78c34b93c9199df9e95d3a"></a>kUART_TransmissionCompleteFlag&#160;</td><td class="fielddoc">
<p>Transmission complete flag. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8aa86a34b2ea609eeeb63f98fea498e540"></a>kUART_RxDataRegFullFlag&#160;</td><td class="fielddoc">
<p>RX data register full flag. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8ab2fc4e1b1164ed3e3fe7e19a39029b2c"></a>kUART_IdleLineFlag&#160;</td><td class="fielddoc">
<p>Idle line detect flag. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a93d3c56466b4656dcce08d9323d7afd8"></a>kUART_RxOverrunFlag&#160;</td><td class="fielddoc">
<p>RX overrun flag. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8abd56419f102fb01c7bbc2c38f81ab360"></a>kUART_NoiseErrorFlag&#160;</td><td class="fielddoc">
<p>RX takes 3 samples of each received bit. If any of these samples differ, noise flag sets </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8aade5071fa56646adcda3562051443868"></a>kUART_FramingErrorFlag&#160;</td><td class="fielddoc">
<p>Frame error flag, sets if logic 0 was detected where stop bit expected </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a0c92973ab1d527115fa01934c62a053d"></a>kUART_ParityErrorFlag&#160;</td><td class="fielddoc">
<p>If parity enabled, sets upon parity error detection </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a33e1c52e5cd9fb6e08a943b6bd9838c2"></a>kUART_LinBreakFlag&#160;</td><td class="fielddoc">
<p>LIN break detect interrupt flag, sets when LIN break char detected and LIN circuit enabled </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8adcfe89feb164ff5b1720312922006a7a"></a>kUART_RxActiveEdgeFlag&#160;</td><td class="fielddoc">
<p>RX pin active edge interrupt flag, sets when active edge detected </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a7a4521cd44a3272a94784670d1bf5a0c"></a>kUART_RxActiveFlag&#160;</td><td class="fielddoc">
<p>Receiver Active Flag (RAF), sets at beginning of valid start bit </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a88474e8289f4a20d37678b49090a1589"></a>kUART_NoiseErrorInRxDataRegFlag&#160;</td><td class="fielddoc">
<p>Noisy bit, sets if noise detected. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8af8f4df7329de3454c4a4037e58c6c02c"></a>kUART_ParityErrorInRxDataRegFlag&#160;</td><td class="fielddoc">
<p>Paritye bit, sets if parity error detected. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a18002ee09e1b1bbdb9644f0d94651c3d"></a>kUART_TxFifoEmptyFlag&#160;</td><td class="fielddoc">
<p>TXEMPT bit, sets if TX buffer is empty </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8aa1c817fca702f79b893dae8b9633a673"></a>kUART_RxFifoEmptyFlag&#160;</td><td class="fielddoc">
<p>RXEMPT bit, sets if RX buffer is empty </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8acdbb6ae3c8977982f6415253ca289390"></a>kUART_TxFifoOverflowFlag&#160;</td><td class="fielddoc">
<p>TXOF bit, sets if TX buffer overflow occurred </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a0b620f9b02d998ebb3ea2aea21305b59"></a>kUART_RxFifoOverflowFlag&#160;</td><td class="fielddoc">
<p>RXOF bit, sets if receive buffer overflow </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga259a53f363288115306a45d08fc66eb8a0959b72698321d92b7835b200d6d5b91"></a>kUART_RxFifoUnderflowFlag&#160;</td><td class="fielddoc">
<p>RXUF bit, sets if receive buffer underflow </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="ga700f3cd8e3800273a1591307cab6311c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>UART interrupt configuration structure, default settings all disabled. </p>
<p>This structure contains the settings for all of the UART interrupt configurations. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311ca4cdb600c1c3989653226cd3366c4f62a"></a>kUART_LinBreakInterruptEnable&#160;</td><td class="fielddoc">
<p>LIN break detect interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311ca71755319c216d0bdf79729c18c24cf64"></a>kUART_RxActiveEdgeInterruptEnable&#160;</td><td class="fielddoc">
<p>RX active edge interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311ca5a0870233f2ffa8f5ca60d80f1e3ed14"></a>kUART_TxDataRegEmptyInterruptEnable&#160;</td><td class="fielddoc">
<p>Transmit data register empty interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311cafd337213dae85b532dfaf9a90e2e5d7b"></a>kUART_TransmissionCompleteInterruptEnable&#160;</td><td class="fielddoc">
<p>Transmission complete interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311cac8a751a334e172413ab833cb0ccb01c3"></a>kUART_RxDataRegFullInterruptEnable&#160;</td><td class="fielddoc">
<p>Receiver data register full interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311ca078ea32d8587f92337a3dee495a1ceed"></a>kUART_IdleLineInterruptEnable&#160;</td><td class="fielddoc">
<p>Idle line interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311ca3e85b14c1b64dbfef1d0b4b7bc39c19d"></a>kUART_RxOverrunInterruptEnable&#160;</td><td class="fielddoc">
<p>Receiver overrun interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311ca53d0fe2bb0cd90198c632f08488af4b3"></a>kUART_NoiseErrorInterruptEnable&#160;</td><td class="fielddoc">
<p>Noise error flag interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311ca00a387446d0ca7fd843968eca8af22a5"></a>kUART_FramingErrorInterruptEnable&#160;</td><td class="fielddoc">
<p>Framing error flag interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311cadc2475fa65313c6f1d13b36f0443b20a"></a>kUART_ParityErrorInterruptEnable&#160;</td><td class="fielddoc">
<p>Parity error flag interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311cae5fc42970a4a0093bb8e4154efec7871"></a>kUART_RxFifoOverflowInterruptEnable&#160;</td><td class="fielddoc">
<p>TX FIFO overflow interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311caa37103885c5c08c5e90b525970fc8a13"></a>kUART_TxFifoOverflowInterruptEnable&#160;</td><td class="fielddoc">
<p>RX FIFO underflow interrupt. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga700f3cd8e3800273a1591307cab6311ca829534874d4ac5a470b31d1f89c298ce"></a>kUART_RxFifoUnderflowInterruptEnable&#160;</td><td class="fielddoc">
<p>RX FIFO underflow interrupt. </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="gacef40dc8e8ac174bfe40ebcbc980f84b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__uart.html#gacef40dc8e8ac174bfe40ebcbc980f84b">_uart_status</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Error codes for the UART driver. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84ba19ddee4fe5963467600028b78fb468e7"></a>kStatus_UART_TxBusy&#160;</td><td class="fielddoc">
<p>Transmitter is busy. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84ba68cf23f981c4b85f82291163fbb2a5e6"></a>kStatus_UART_RxBusy&#160;</td><td class="fielddoc">
<p>Receiver is busy. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84baf36c829b1b889517bf775c0d7ce29fa6"></a>kStatus_UART_TxIdle&#160;</td><td class="fielddoc">
<p>UART transmitter is idle. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84bae0877b14627ed2aa8ddb2bf5b033f407"></a>kStatus_UART_RxIdle&#160;</td><td class="fielddoc">
<p>UART receiver is idle. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84ba765913f003819ed87b861d187bf79ab8"></a>kStatus_UART_TxWatermarkTooLarge&#160;</td><td class="fielddoc">
<p>TX FIFO watermark too large </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84ba720cefde05389830f35f6e6df6f6ac67"></a>kStatus_UART_RxWatermarkTooLarge&#160;</td><td class="fielddoc">
<p>RX FIFO watermark too large </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84ba5ee8e23fc9ab20cf366942751b895f54"></a>kStatus_UART_FlagCannotClearManually&#160;</td><td class="fielddoc">
<p>UART flag can't be manually cleared. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84ba950972a9e2ebbaa13c92e8f5a51f785d"></a>kStatus_UART_Error&#160;</td><td class="fielddoc">
<p>Error happens on UART. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84ba2e5b644b1e10c426af818bc78657e992"></a>kStatus_UART_RxRingBufferOverrun&#160;</td><td class="fielddoc">
<p>UART RX software ring buffer overrun. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggacef40dc8e8ac174bfe40ebcbc980f84bab6b1fd6c2deec25992449f5b12303a26"></a>kStatus_UART_RxHardwareOverrun&#160;</td><td class="fielddoc">
<p>UART RX receiver overrun. </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="ga436e5a7bdb5f24decb5bfb0c87a83ff4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__uart.html#ga436e5a7bdb5f24decb5bfb0c87a83ff4">uart_parity_mode_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>UART parity mode. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="gga436e5a7bdb5f24decb5bfb0c87a83ff4a97e2feae6671a6de1126ebc2edf4606b"></a>kUART_ParityDisabled&#160;</td><td class="fielddoc">
<p>Parity disabled </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga436e5a7bdb5f24decb5bfb0c87a83ff4a9e68fe3aba46e045bee5433ed098bff0"></a>kUART_ParityEven&#160;</td><td class="fielddoc">
<p>Parity enabled, type even, bit setting: PE|PT = 10 </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="gga436e5a7bdb5f24decb5bfb0c87a83ff4ae48c7fabc9babf1be626ebeb2627a54c"></a>kUART_ParityOdd&#160;</td><td class="fielddoc">
<p>Parity enabled, type odd, bit setting: PE|PT = 11 </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="gaca4f14d23735c6afefb76cbee18e1db6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__uart.html#gaca4f14d23735c6afefb76cbee18e1db6">uart_stop_bit_count_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>UART stop bit count. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ggaca4f14d23735c6afefb76cbee18e1db6a5a8829a108d8a46abb097a36cde051a7"></a>kUART_OneStopBit&#160;</td><td class="fielddoc">
<p>One stop bit </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ggaca4f14d23735c6afefb76cbee18e1db6a9704b3ae3ee851acf324eb357f75ab56"></a>kUART_TwoStopBit&#160;</td><td class="fielddoc">
<p>Two stop bits </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga0ec8215440a7d2f80a421d557b636035"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_AbortReceive </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Aborts the interrupt-driven data receiving. </p>
<p>This function aborts the interrupt-driven data receiving. The user can get the remainBytes to know how many bytes not received yet.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga3e1869195f3e7bd6c38d7328aa3df131"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_AbortSend </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Aborts the interrupt driven data transmit. </p>
<p>This function aborts the interrupt driven data sending. The user can get the remainBytes to find out how many bytes are still not sent out.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gacc4cb85534361f836edca9454a6426c6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> UART_ClearStatusFlags </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>mask</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Clears status flags with the provided mask. </p>
<p>This function clears UART status flags with a provided mask. Automatically cleared flag can't be cleared by this function. Some flags can only be cleared or set by hardware itself. These flags are: kUART_TxDataRegEmptyFlag, kUART_TransmissionCompleteFlag, kUART_RxDataRegFullFlag, kUART_RxActiveFlag, kUART_NoiseErrorInRxDataRegFlag, kUART_ParityErrorInRxDataRegFlag, kUART_TxFifoEmptyFlag,kUART_RxFifoEmptyFlag</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">mask</td><td>The status flags to be cleared, it is logical OR value of <a class="el" href="group__uart.html#ga259a53f363288115306a45d08fc66eb8">_uart_flags</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">kStatus_UART_FlagCannotClearManually</td><td>The flag can't be cleared by this function but it is cleared automatically by hardware. </td></tr>
    <tr><td class="paramname">kStatus_Success</td><td>Status in the mask are cleared. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaffdc577a350c4cba18f20200aaac30cb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_CreateHandle </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__uart.html#ga2868b6ea396ab212547f2157380429c5">uart_transfer_callback_t</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>userData</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initializes the UART handle. </p>
<p>This function initializes the UART handle which can be used for other UART transactional APIs. Usually, for a specified UART instance, call this API once to get the initialized handle.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
    <tr><td class="paramname">callback</td><td>The callback function. </td></tr>
    <tr><td class="paramname">userData</td><td>The parameter of the callback function. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga3ff48bc211831be33e6fe5c50eb671a0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_Deinit </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Deinitializes a UART instance. </p>
<p>This function waits for TX complete, disables TX and RX, and disables the UART clock.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga3f24b6b9b730046a9a81918f9abe7d99"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_DisableInterrupts </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>mask</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Disables the UART interrupts according to the provided mask. </p>
<p>This function disables the UART interrupts according to the provided mask. The mask is a logical OR of enumeration members. See <a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a>. For example, to disable TX empty interrupt and RX full interrupt: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;UART_DisableInterrupts(UART1,kUART_TxDataRegEmptyInterruptEnable | kUART_RxDataRegFullInterruptEnable);</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">mask</td><td>The interrupts to disable. Logical OR of <a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga49ecd761481a22956e3f46285038719c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_EnableInterrupts </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>mask</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enables UART interrupts according to the provided mask. </p>
<p>This function enables the UART interrupts according to the provided mask. The mask is a logical OR of enumeration members. See <a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a>. For example, to enable TX empty interrupt and RX full interrupt: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;UART_EnableInterrupts(UART1,kUART_TxDataRegEmptyInterruptEnable | kUART_RxDataRegFullInterruptEnable);</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">mask</td><td>The interrupts to enable. Logical OR of <a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaa503e36c8ce82f1042ce186b9863871f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void UART_EnableRx </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables the UART receiver. </p>
<p>This function enables or disables the UART receiver.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">enable</td><td>True to enable, false to disable. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga32e14856ac77e50800e733ba8ab9c448"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void UART_EnableRxDMA </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables the UART receiver DMA. </p>
<p>This function enables or disables the receiver data register full flag, S1[RDRF], to generate DMA requests.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">enable</td><td>True to enable, false to disable. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaf2ed68f3dd6ee8a272e9afd8ebd84f93"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void UART_EnableTx </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables the UART transmitter. </p>
<p>This function enables or disables the UART transmitter.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">enable</td><td>True to enable, false to disable. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga93a5d80d9f8ec9e61eb54db18efa5c63"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void UART_EnableTxDMA </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables the UART transmitter DMA request. </p>
<p>This function enables or disables the transmit data register empty flag, S1[TDRE], to generate the DMA requests.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">enable</td><td>True to enable, false to disable. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga3fe5d17fa2a833d844587f71d0dcecfe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static uint32_t UART_GetDataRegisterAddress </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets the UART data register address. </p>
<p>This function returns the UART data register address, which is mainly used by DMA/eDMA.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>UART data register address which are used both by transmitter and receiver. </dd></dl>

</div>
</div>
<a class="anchor" id="ga47c7c09e04a0497f4530d553e27d96c5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_GetDefaultConfig </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__uart.html#structuart__config__t">uart_config_t</a> *&#160;</td>
          <td class="paramname"><em>config</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the default configuration structure. </p>
<p>This function initializes the UART configuration structure to a default value. The default values are: uartConfig-&gt;baudRate_Bps = 115200U; uartConfig-&gt;bitCountPerChar = kUART_8BitsPerChar; uartConfig-&gt;parityMode = kUART_ParityDisabled; uartConfig-&gt;stopBitCount = kUART_OneStopBit; uartConfig-&gt;txFifoWatermark = 0; uartConfig-&gt;rxFifoWatermark = 1; uartConfig-&gt;enableTx = false; uartConfig-&gt;enableRx = false;</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">config</td><td>Pointer to configuration structure. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga79bc0b880286ec0dc0543606fc772912"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t UART_GetEnabledInterrupts </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the enabled UART interrupts. </p>
<p>This function gets the enabled UART interrupts. The enabled interrupts are returned as the logical OR value of the enumerators <a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a>. To check specific interrupts enable status, compare the return value with enumerators in <a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a>. For example, to check whether TX empty interrupt is enabled: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;uint32_t enabledInterrupts = UART_GetEnabledInterrupts(UART1);</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;if (kUART_TxDataRegEmptyInterruptEnable &amp; enabledInterrupts)</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;{</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;    ...</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;}</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>UART interrupt flags which are logical OR of the enumerators in <a class="el" href="group__uart.html#ga700f3cd8e3800273a1591307cab6311c">_uart_interrupt_enable</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga8dbd1d7bc0e2365ca9c128418cf8cf2e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> UART_GetReceiveCount </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the number of bytes that have been received. </p>
<p>This function gets the number of bytes that have been received.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
    <tr><td class="paramname">count</td><td>Receive bytes count. </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">kStatus_NoTransferInProgress</td><td>No receive in progress. </td></tr>
    <tr><td class="paramname">kStatus_InvalidArgument</td><td>Parameter is invalid. </td></tr>
    <tr><td class="paramname">kStatus_Success</td><td>Get successfully through the parameter <code>count</code>; </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaf3ae8db47d2adb4516b367dc85f5d08c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> UART_GetSendCount </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the number of bytes that have been written to UART TX register. </p>
<p>This function gets the number of bytes that have been written to UART TX register by interrupt method.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
    <tr><td class="paramname">count</td><td>Send bytes count. </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">kStatus_NoTransferInProgress</td><td>No send in progress. </td></tr>
    <tr><td class="paramname">kStatus_InvalidArgument</td><td>Parameter is invalid. </td></tr>
    <tr><td class="paramname">kStatus_Success</td><td>Get successfully through the parameter <code>count</code>; </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga28bf715678c0d3c8c3902e79455ee923"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t UART_GetStatusFlags </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get UART status flags. </p>
<p>This function get all UART status flags, the flags are returned as the logical OR value of the enumerators <a class="el" href="group__uart.html#ga259a53f363288115306a45d08fc66eb8">_uart_flags</a>. To check specific status, compare the return value with enumerators in <a class="el" href="group__uart.html#ga259a53f363288115306a45d08fc66eb8">_uart_flags</a>. For example, to check whether the TX is empty: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;if (kUART_TxDataRegEmptyFlag &amp; UART_GetStatusFlags(UART1))</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;{</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;    ...</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;}</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>UART status flags which are ORed by the enumerators in the _uart_flags. </dd></dl>

</div>
</div>
<a class="anchor" id="ga309aa9807039e6cf5c2f05be0b0e745f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_HandleErrorIRQ </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>UART Error IRQ handle function. </p>
<p>This function handle the UART error IRQ request.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaeb53a26a18473713bf2a8236af933e06"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_HandleIRQ </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>UART IRQ handle function. </p>
<p>This function handles the UART transmit and receive IRQ request.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaa6162686a1aced16ff39c7d54d81fe5b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_Init </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__uart.html#structuart__config__t">uart_config_t</a> *&#160;</td>
          <td class="paramname"><em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>srcClock_Hz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initializes a UART instance with user configuration structure and peripheral clock. </p>
<p>This function configures the UART module with the user-defined settings. The user can configure the configuration structure and also get the default configuration by using the <a class="el" href="group__uart.html#ga47c7c09e04a0497f4530d553e27d96c5" title="Gets the default configuration structure. ">UART_GetDefaultConfig()</a> function. Example below shows how to use this API to configure UART. </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;uart_config_t uartConfig;</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;uartConfig.baudRate_Bps = 115200U;</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;uartConfig.parityMode = kUART_ParityDisabled;</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;uartConfig.stopBitCount = kUART_OneStopBit;</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;uartConfig.txFifoWatermark = 0;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;uartConfig.rxFifoWatermark = 1;</div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;UART_Init(UART1, &amp;uartConfig, 20000000U);</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">config</td><td>Pointer to user-defined configuration structure. </td></tr>
    <tr><td class="paramname">srcClock_Hz</td><td>UART clock source frequency in HZ. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga23c2382838fe05bd24fc0744b2322153"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_ReadBlocking </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read RX data register using a blocking method. </p>
<p>This function polls the RX register, waits for the RX register to be full or for RX FIFO to have data and read data from the TX register.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">data</td><td>Start address of the buffer to store the received data. </td></tr>
    <tr><td class="paramname">length</td><td>Size of the buffer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga3728011ac7906f3e03bb677b0f9cf7b4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static uint8_t UART_ReadByte </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Reads the RX register directly. </p>
<p>This function reads data from the TX register directly. The upper layer must ensure that the RX register is full or that the TX FIFO has data before calling this function.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The byte read from UART data register. </dd></dl>

</div>
</div>
<a class="anchor" id="ga5dfacd59d3fb1a18c06c6bf1519cbc9c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> UART_ReceiveNonBlocking </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> *&#160;</td>
          <td class="paramname"><em>xfer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>receivedBytes</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Receives a buffer of data using an interrupt method. </p>
<p>This function receives data using an interrupt method. This is a non-blocking function, which returns without waiting for all data to be received. If the RX ring buffer is used and not empty, the data in the ring buffer is copied and the parameter <code>receivedBytes</code> shows how many bytes are copied from the ring buffer. After copying, if the data in the ring buffer is not enough to read, the receive request is saved by the UART driver. When the new data arrives, the receive request is serviced first. When all data is received, the UART driver notifies the upper layer through a callback function and passes the status parameter <a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84bae0877b14627ed2aa8ddb2bf5b033f407">kStatus_UART_RxIdle</a>. For example, the upper layer needs 10 bytes but there are only 5 bytes in the ring buffer. The 5 bytes are copied to the xfer-&gt;data and this function returns with the parameter <code>receivedBytes</code> set to 5. For the left 5 bytes, newly arrived data is saved from the xfer-&gt;data[5]. When 5 bytes are received, the UART driver notifies the upper layer. If the RX ring buffer is not enabled, this function enables the RX and RX interrupt to receive data to the xfer-&gt;data. When all data is received, the upper layer is notified.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
    <tr><td class="paramname">xfer</td><td>UART transfer structure, refer to <a class="el" href="group__uart.html#structuart__transfer__t" title="UART transfer structure. ">uart_transfer_t</a>. </td></tr>
    <tr><td class="paramname">receivedBytes</td><td>Bytes received from the ring buffer directly. </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">kStatus_Success</td><td>Successfully queue the transfer into transmit queue. </td></tr>
    <tr><td class="paramname">kStatus_UART_RxBusy</td><td>Previous receive request is not finished. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga63a181530dc62200a8eed10ec5cf5167"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__ksdk__common.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> UART_SendNonBlocking </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__uart.html#structuart__transfer__t">uart_transfer_t</a> *&#160;</td>
          <td class="paramname"><em>xfer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Transmits a buffer of data using the interrupt method. </p>
<p>This function sends data using an interrupt method. This is a non-blocking function, which returns directly without waiting for all data to be written to the TX register. When all data is written to the TX register in the ISR, the UART driver calls the callback function and passes the <a class="el" href="group__uart.html#ggacef40dc8e8ac174bfe40ebcbc980f84baf36c829b1b889517bf775c0d7ce29fa6">kStatus_UART_TxIdle</a> as status parameter.</p>
<dl class="section note"><dt>Note</dt><dd>The kStatus_UART_TxIdle is passed to the upper layer when all data is written to the TX register. However it does not ensure that all data are sent out. Before disabling the TX, check the kUART_TransmissionCompleteFlag to ensure that the TX is finished.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
    <tr><td class="paramname">xfer</td><td>UART transfer structure. See <a class="el" href="group__uart.html#structuart__transfer__t" title="UART transfer structure. ">uart_transfer_t</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">kStatus_Success</td><td>Successfully start the data transmission. </td></tr>
    <tr><td class="paramname">kStatus_UART_TxBusy</td><td>Previous transmission still not finished, data not all written to TX register yet. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae0482730b0d5f6b7f8d12aba1e4044e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_SetBaudRate </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>baudRate_Bps</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>srcClock_Hz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the UART instance baud rate. </p>
<p>This function configures the UART module baud rate. This function is used to update the UART module baud rate after the UART module is initialized by the UART_Init. </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;UART_SetBaudRate(UART1, 115200U, 20000000U);</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">baudRate_Bps</td><td>UART baudrate to be set. </td></tr>
    <tr><td class="paramname">srcClock_Hz</td><td>UART clock source freqency in HZ. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga2263797ea1e1b0ef07898d6e6fc16049"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_StartRingBuffer </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>ringBuffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>ringBufferSize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets up the RX ring buffer. </p>
<p>This function sets up the RX ring buffer to a specific UART handle.</p>
<p>When the RX ring buffer is used, data received are stored into the ring buffer even when the user doesn't call the <a class="el" href="group__uart.html#ga5dfacd59d3fb1a18c06c6bf1519cbc9c" title="Receives a buffer of data using an interrupt method. ">UART_ReceiveNonBlocking()</a> API. If there is already data received in the ring buffer, the user can get the received data from the ring buffer directly.</p>
<dl class="section note"><dt>Note</dt><dd>When using the RX ring buffer, one byte is reserved for internal use. In other words, if <code>ringBufferSize</code> is 32, then only 31 bytes are used for saving data.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
    <tr><td class="paramname">ringBuffer</td><td>Start address of the ring buffer for background receiving. Pass NULL to disable the ring buffer. </td></tr>
    <tr><td class="paramname">ringBufferSize</td><td>size of the ring buffer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gadd168b3e4043dfa92feb242fcfce0a35"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_StopRingBuffer </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uart_handle_t *&#160;</td>
          <td class="paramname"><em>handle</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Aborts the background transfer and uninstalls the ring buffer. </p>
<p>This function aborts the background transfer and uninstalls the ring buffer.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">handle</td><td>UART handle pointer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gad67794d80b7ee2d3292b41af6ff1e100"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UART_WriteBlocking </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Writes to the TX register using a blocking method. </p>
<p>This function polls the TX register, waits for the TX register to be empty or for the TX FIFO to have room and writes data to the TX buffer.</p>
<dl class="section note"><dt>Note</dt><dd>This function does not check whether all the data has been sent out to the bus. Before disabling the TX, check kUART_TransmissionCompleteFlag to ensure that the TX is finished.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">data</td><td>Start address of the data to write. </td></tr>
    <tr><td class="paramname">length</td><td>Size of the data to write. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga371d2ceda535de3a74beba5a3465fab0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void UART_WriteByte </td>
          <td>(</td>
          <td class="paramtype">UART_Type *&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Writes to the TX register. </p>
<p>This function writes data to the TX register directly. The upper layer must ensure that the TX register is empty or TX FIFO has empty room before calling this function.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">base</td><td>UART peripheral base address. </td></tr>
    <tr><td class="paramname">data</td><td>The byte to write. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Mon Mar 7 2016 16:48:23 for Kinetis Bootloader by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
